package mapelements.foreground;

import java.util.EventObject;

import map.AbstractMap;

/**rappresenta un evento che avverte che un foreground è stato modificato in modo specifico.
 * Se il foreground è stato aggiunto o eliminato allora sarebbe opportuno usare la
 * classe MapEvent. Se invece un foregorund ha modificato un suo attributo ascoltato
 * da altri oggetti allora ForegroundEvent è l'evento migliore per trasportare tali
 * modifiche. Come può essere modificato un foregorund? Essenzialmente il foreground cambia
 * in modo astratto se la sua <tt>shape</tt> viene mutata
 * 
 * @author koldar
 * @version 1.2
 */
public class ForegroundEvent<FOREGROUND extends Foreground> extends EventObject{

	private static final long serialVersionUID = -1209848293492499344L;
	
	/**valore solo teorico. Un evento che non fa cmabiamenti non dovrebbe essere mai lanciato se non in casi di test del software*/
	public static final int NOCHANGE=0;
	/**in caso in cui il foreground abbai modificato la propria <tt>shape</tt>*/
	public static final int SHAPECHANGED=1;
	/**indica l'azione che ha subito questo foreground. i valori possibili sono:
	 * <ul>
	 *  <li>{@link #NOCHANGE}</li>
	 *  <li>{@link #SHAPECHANGED}</li>
	 * </ul>
	 */
	private int action;
	
	public ForegroundEvent(FOREGROUND source, int action) {
		super(source);
		this.action=action;
	}

	/**
	 * @return the action. For further information visit {@link #action}
	 */
	public int getAction() {
		return action;
	}

	/**
	 * @param action the action to set
	 */
	public void setAction(int action) {
		this.action = action;
	}
	
	
	

}
